package com.tony.spring.mode.observer;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 创建目标对象【Tony】
 * @author Tony
 *
 */
public class Subject {
	
	/**
	 * 观察者（亲爱的学生）列表
	 */
	private static List<Observer> observerList = new ArrayList<Observer>();
	
	/**
	 * 消息队列
	 */
	private static List<String> messgaeList = new ArrayList<String>();
	

	
	
	/**
	 * 添加观察者
	 * @param observer
	 */
	public void addObserver(Observer observer){
		observerList.add(observer);
	}
	
	/**
	 * 删除观察者
	 * @param observer
	 */
	public void removeObserver(Observer observer){
		observerList.remove(observer);
	}
	
	/**
	 * 产生一个行为
	 */
	public void action(){
		System.out.println("Tony老师开始上课了");
		// 消息
//		messgaeList.add("action");
		
		// 事件
		final MyEvent event = new MyEvent(this, "Tony目标");
		// 通知所有的观察者来进行响应
		if(observerList != null && observerList.size() > 0){
			for(final Observer observer : observerList){
				new Thread(){
					@Override
					public void run() {
						observer.OnAction(event);
						
					};
				}.start();
			}
		}
	}
	
	
	/**
	 * 产生一个行为
	 */
	public void action4(){
		System.out.println("Tony老师开始上课了");
		messgaeList.add("action4");
		
	}
	
	/**
	 * 产生一个行为
	 */
	public void action1(){
		System.out.println("Tony老师开始上课了");
		messgaeList.add("action1");
		
	}
	
	/**
	 * 产生一个行为
	 */
	public void action2(){
		System.out.println("Tony老师开始上课了");
		messgaeList.add("action2");
		
	}
	
}
